#pragma once

#ifdef XSOCKET_EXPORTS
#define XSOCKET_API __declspec(dllexport)
#else
#define XSOCKET_API __declspec(dllimport)
#endif // XSOCKET_EXPORTS

#include "globle.h"

#include <string>
class XSOCKET_API XTcp
{
public:
	/*
	*@brief  初始化系统Socket库
	*/
	XTcp();

	virtual ~XTcp();

	/*
	*@brief  创建套接字
	*@return 返回创建的套接字id
	*/
	int createSocket();

	/*
	*@brief 绑定端口
	*@param[in]  端口号
	*@return     true绑定成功，false绑定失败
	*/
	bool bind(unsigned short port);

	/*
	*@brief 获取连接对象信息，返回Tcp对象
	*@return     
	*/
	XTcp accept();

	/*
	*@brief 接受客户端数据
	*@param[in]  buff数据内容 bufsize数据大小
	*@return     
	*/
	int recv(char* buff, int bufsize);

	/*
	*@brief 发送数据
	*@param[in]  buff数据内容 bufsize数据大小
	*@return     
	*/
	int send(const char* buff, int bufsize);

	/*
	*@brief 关闭套接字
	*/
	void close();

	bool isConnected();

	void setSock(unsigned int sock);

	unsigned int getSock();

private:
	int sock = 0;
	unsigned short port = 0;
	char ip[16]{ 0 };

};

